#!/usr/bin/env bash

# Copyright (c) 2025 Shenzhen Kaihong Digital Industry Development Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

MIRROR_DIR=/mirror
ARCHIVE_EXT=tar.xz

tmp_mirror=$(mktemp -d)

# Reuse installed packages from the mirror
echo "Reusing installed packages from the mirror"
installed=$(ferrium list-installed)
mkdir -p $tmp_mirror/{dists,stats}
for pkg in $installed; do
    if [ -f ${MIRROR_DIR}/dists/${pkg}.${ARCHIVE_EXT} ] && [ -f ${MIRROR_DIR}/stats/${pkg}.stat ]; then
        echo "Reusing ${pkg}"
        ln -f ${MIRROR_DIR}/dists/${pkg}.${ARCHIVE_EXT} $tmp_mirror/dists/
        ln -f ${MIRROR_DIR}/stats/${pkg}.stat $tmp_mirror/stats/
    fi
done

# Generate the mirror
echo "Generating the mirror"
ferrium gen-mirror --root $tmp_mirror || exit 1

# Replace the mirror
echo "Replacing the mirror"
rm -rf ${MIRROR_DIR}/*
mv $tmp_mirror/* ${MIRROR_DIR}
rm -rf $tmp_mirror
